Socket.io ব্যবহার করে Realtime Chat Application

Computer Programming - নোড জেএস (Node.js) - WebSockets এবং Realtime Communication (ওয়েবসকেটস এবং রিয়েলটাইম কমিউনিকেশন)
248

Socket.io হল একটি JavaScript লাইব্রেরি যা WebSockets এর উপর ভিত্তি করে রিয়েল-টাইম, দুই-দিকনির্ভর (bidirectional) ইভেন্ট-ড্রিভেন যোগাযোগ প্রদান করে। এটি ব্যবহার করে আপনি সার্ভার এবং ক্লায়েন্টের মধ্যে রিয়েল-টাইম ডেটা স্ট্রিমিং এবং যোগাযোগ তৈরি করতে পারেন।

এখানে একটি Realtime Chat Application তৈরির উদাহরণ দেওয়া হলো, যেখানে Socket.io ব্যবহার করা হয়েছে।


১. Socket.io সেটআপ

1.1. প্যাকেজ ইনস্টলেশন

প্রথমে, আপনাকে Node.js প্রকল্পে Socket.io এবং Express.js ইনস্টল করতে হবে।

npm init -y  # Node.js প্রকল্প শুরু করা
npm install express socket.io  # Express এবং Socket.io ইনস্টল করা

1.2. Socket.io সার্ভার তৈরি

এখন একটি Express সার্ভার তৈরি করা হবে এবং Socket.io ব্যবহার করে রিয়েল-টাইম চ্যাট ফিচার তৈরি করা হবে।

// server.js
const express = require('express');
const http = require('http');
const socketIo = require('socket.io');

const app = express();
const server = http.createServer(app);
const io = socketIo(server);  // Socket.io সার্ভারের সাথে সংযোগ

// ক্লায়েন্টের জন্য HTML ফাইল সার্ভ করা
app.get('/', (req, res) => {
  res.sendFile(__dirname + '/index.html');
});

// রিয়েল-টাইম চ্যাটের জন্য সোকেট ইভেন্ট
io.on('connection', (socket) => {
  console.log('A user connected');

  // একটি বার্তা গ্রহণ করা এবং সমস্ত ক্লায়েন্টে পাঠানো
  socket.on('chat message', (msg) => {
    io.emit('chat message', msg);  // সমস্ত ক্লায়েন্টে পাঠানো
  });

  // ইউজার ডিসকানেক্ট হলে লগ করা
  socket.on('disconnect', () => {
    console.log('User disconnected');
  });
});

// সার্ভার চালু করা
server.listen(3000, () => {
  console.log('Server running on http://localhost:3000');
});

এখানে:

  • express ব্যবহৃত হয়েছে HTTP সার্ভার তৈরি করতে।
  • socket.io সার্ভার এবং ক্লায়েন্টের মধ্যে যোগাযোগ সুরক্ষিত করেছে।
  • ক্লায়েন্ট যখন একটি chat message ইভেন্ট পাঠায়, তখন সেই বার্তা সমস্ত সংযুক্ত ক্লায়েন্টে chat message ইভেন্টের মাধ্যমে পাঠানো হয়।

1.3. HTML ফাইল তৈরি করা

এখন, ক্লায়েন্ট সাইডের জন্য একটি HTML ফাইল তৈরি করতে হবে যেখানে চ্যাট ইন্টারফেস থাকবে।

<!-- index.html -->
<!DOCTYPE html>
<html>
  <head>
    <title>Realtime Chat</title>
    <script src="/socket.io/socket.io.js"></script>
    <script>
      var socket = io();

      // বার্তা পাঠানোর ইভেন্ট
      function sendMessage() {
        var msg = document.getElementById('message').value;
        socket.emit('chat message', msg);  // বার্তা সার্ভারে পাঠানো
        document.getElementById('message').value = '';
        return false;  // ফর্ম সাবমিট প্রতিরোধ
      }

      // বার্তা পাওয়ার ইভেন্ট
      socket.on('chat message', function(msg){
        var li = document.createElement('li');
        li.textContent = msg;
        document.getElementById('messages').appendChild(li);
      });
    </script>
  </head>
  <body>
    <h1>Realtime Chat Application</h1>
    <ul id="messages"></ul>
    <form onsubmit="return sendMessage();">
      <input id="message" autocomplete="off">
      <button>Send</button>
    </form>
  </body>
</html>

এখানে:

  • /socket.io/socket.io.js ফাইলটি Socket.io ক্লায়েন্ট সাইড লাইব্রেরি।
  • socket.emit('chat message', msg) দ্বারা ক্লায়েন্ট সার্ভারে বার্তা পাঠায়।
  • socket.on('chat message', function(msg) {...}) দ্বারা সার্ভার থেকে বার্তা পাওয়ার পর তা HTML পেজে প্রদর্শন করা হয়।

২. চ্যাট অ্যাপ্লিকেশন চালানো

এখন, সার্ভার চালু করে ক্লায়েন্টের মাধ্যমে রিয়েল-টাইম চ্যাট করা যাবে।

  1. সার্ভার চালানো:
node server.js
  1. ব্রাউজারে http://localhost:3000 খুলে চ্যাট অ্যাপ্লিকেশনটি দেখতে পারবেন।

৩. কী কী হচ্ছে এখানে?

  • Socket.io Server (Node.js): সার্ভার এবং ক্লায়েন্টের মধ্যে রিয়েল-টাইম ডেটা ট্রান্সফার পরিচালনা করছে।
  • Socket.io Client (HTML): ক্লায়েন্ট সাইডে ব্যবহারকারী বার্তা পাঠানোর জন্য Socket.io লাইব্রেরি ব্যবহার করা হচ্ছে, এবং সার্ভার থেকে আসা বার্তা রিসিভ করে পেজে দেখানো হচ্ছে।
  • Event-driven Communication: Socket.io ইভেন্ট ভিত্তিক, তাই যখন একজন ব্যবহারকারী বার্তা পাঠায়, তখন তা সবাইকে পাঠানো হয়, এমনকি নতুন ব্যবহারকারীরা যখন সংযুক্ত হয়, তাদেরও বার্তা দেখা যায়।

৪. Scalability

যদি অনেক ব্যবহারকারী একসাথে সংযুক্ত হয়, তখন Socket.io স্বয়ংক্রিয়ভাবে বার্তা পাঠানোর জন্য Pub/Sub (Publish/Subscribe) মডেল ব্যবহার করে। বড় আকারের সিস্টেমের জন্য, আপনি Redis ইন্টিগ্রেট করতে পারেন যাতে বার্তা দ্রুত বিতরণ হয়।


সারাংশ

  • Socket.io ব্যবহার করে আপনি খুব সহজেই রিয়েল-টাইম অ্যাপ্লিকেশন তৈরি করতে পারেন, যেমন একটি চ্যাট অ্যাপ্লিকেশন।
  • Server-side (Node.js) এবং Client-side (HTML/JavaScript) দুটি অংশের মধ্যে যোগাযোগ স্থাপন করার জন্য Socket.io এর emit() এবং on() মেথড ব্যবহার করা হয়।
  • এই প্রক্রিয়াটি আপনাকে দ্রুত, ইভেন্ট-ড্রিভেন এবং দুই-দিকনির্ভর (bidirectional) যোগাযোগ সক্ষম করে, যা রিয়েল-টাইম চ্যাট সিস্টেমে ব্যবহৃত হয়।
Content added By
Promotion
NEW SATT AI এখন আপনাকে সাহায্য করতে পারে।

Are you sure to start over?

Loading...